/**
 * @项目名称: lession01
 * @文件名称: Datatype_Key.java
 * @Date: 2016年9月21日
 * @Copyright: 2016 www.yunhe.cn Inc. All rights reserved.
 * 注意：本内容仅限于云和数据公司内部传阅，禁止外泄以及用于其他的商业目的
*/
package com.cn.yunhe.redis.study;

import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import org.junit.Test;
import redis.clients.jedis.Jedis;

/**
 * 
 * JEDIS常用的对Hash类型的操作方法
 * 
 * @author ZSL
 *
 */
public class Datatype_Hash {

	/**
	 * 日志工具
	 */
	Logger logger = Logger.getLogger(Datatype_Hash.class);
	
	/**
	 * 测试操作
	 * 
	 * 以下是多数相对常用的KEY操作
	 * 
	 * 其他未涉及到的自己可以扩展查询命令练习下
	 * 
	 * 工作生产环境中根据具体业务，需要用到了再去查资料调用某个命令方法即可。
	 * 
	 */
	@Test
	public void operator(){
		
		Jedis client = new Jedis("127.0.0.1",6379);
		
		//清空默认数据库的所有数据
		client.flushDB();
		
		//定义一个MAP对象
        Map<String,String> map = new HashMap<>();
        map.put("username","mrzhangsan");
        map.put("nickname","张三");
        map.put("sex","男");
        map.put("age","25");
        //把MAP存储到REDIS内存数据库中，设置KEY为
        client.hmset("user:1001",map);
        //增加或修改指定KEY【user:1001】中的字段的属性值
        client.hset("user:1001", "mobile", "13803831221");
        
        //从REDIS获取用户编号为1001的用户内存对象
        Map<String,String> tmpUserMap = client.hgetAll("user:1001");
        logger.debug("散列user:1001的所有键值对为："+tmpUserMap);
        
        logger.debug("散列hash的所有键为："+client.hkeys("hash"));//return Set<String>
        logger.debug("散列hash的所有值为："+client.hvals("hash"));//return List<String>
        logger.debug("将key6保存的值加上一个整数，如果key6不存在则添加key6："+client.hincrBy("hash", "key6", 6));
        logger.debug("散列hash的所有键值对为："+client.hgetAll("hash"));
        logger.debug("将key6保存的值加上一个整数，如果key6不存在则添加key6："+client.hincrBy("hash", "key6", 3));
        logger.debug("散列hash的所有键值对为："+client.hgetAll("hash"));
        logger.debug("删除一个或者多个键值对："+client.hdel("hash", "key2"));
        logger.debug("散列hash的所有键值对为："+client.hgetAll("hash"));
        logger.debug("散列hash中键值对的个数："+client.hlen("hash"));
        logger.debug("判断hash中是否存在key2："+client.hexists("hash","key2"));
        logger.debug("判断hash中是否存在key3："+client.hexists("hash","key3"));
        logger.debug("获取hash中的值："+client.hmget("hash","key3"));
        logger.debug("获取hash中的值："+client.hmget("hash","key3","key4"));

		
		client.close();
	}

}
